/*
 * PeliculaDaoJdbc.java      1.0   25/02/2011
 *
 * Copyright Grupo 3A UPC
 * All rights reserved.
 *
 * Contiene el manejador JDBC para el mantenimiento de la Pelicula 
 */

package pe.edu.upc.dew.grupo3a.dao;

import java.util.List;

import org.springframework.dao.DataAccessException;
import org.springframework.jdbc.core.BeanPropertyRowMapper;
import org.springframework.jdbc.core.simple.SimpleJdbcDaoSupport;

//import pe.edu.upc.dew.grupo3a.model.Cine;
import pe.edu.upc.dew.grupo3a.model.Pelicula;

public class PeliculaDaoJdbc extends SimpleJdbcDaoSupport implements
PeliculaDao{
 
	@Override
	public Pelicula getPeliculaPorNombre(String nombre) {
		// TODO Auto-generated method stub
		try {
			return getSimpleJdbcTemplate()
			.queryForObject(
					"select codigopelicula, nombre, genero, clasificacion, nacionalidad, director," +
					"sinopsis,duracion,fechaEstreno,fotoPath,estado from pelicula where nombre=?",
					new BeanPropertyRowMapper<Pelicula>(Pelicula.class),
					nombre);
			
		} catch(DataAccessException ex ){
			return null;
		}
	}

	@Override
	public void updatePelicula(Pelicula pelicula) {
		getSimpleJdbcTemplate().update("Update pelicula set " +
				"nombre=?, genero=?, clasificacion=?, nacionalidad=?, director=?," +
				"sinopsis=?,duracion=?,fechaEstreno=?,fotoPath=?,estado=? " +
				"where codigopelicula=?",
				pelicula.getNombre(),pelicula.getGenero(), pelicula.getClasificacion(),
				pelicula.getNacionalidad(),pelicula.getDirector(),pelicula.getSinopsis(),
				pelicula.getDuracion(),pelicula.getFechaEstreno(),pelicula.getFotoPath(),
				pelicula.getEstado(),pelicula.getCodigopelicula());
	}

	@Override
	public void insertPelicula(Pelicula pelicula) {
		int count= getSimpleJdbcTemplate().queryForInt("Select count(*) from pelicula");
		String newcodigo = "000000" + String.valueOf(count+1);
		pelicula.setCodigopelicula(newcodigo.substring(newcodigo.length()-6));
		
		getSimpleJdbcTemplate().update("Insert into pelicula (codigopelicula, nombre, genero, " +
				"clasificacion, nacionalidad, director,sinopsis,duracion,fechaEstreno,fotoPath,estado)" +
				"values (?,?,?,?,?,?,?,?,?,?,?)",
				pelicula.getCodigopelicula(), pelicula.getNombre(),pelicula.getGenero(), 
				pelicula.getClasificacion(), pelicula.getNacionalidad(),pelicula.getDirector(),
				pelicula.getSinopsis(), pelicula.getDuracion(),pelicula.getFechaEstreno(),
				pelicula.getFotoPath(), pelicula.getEstado());
	}
	@Override
	public List<Pelicula> getPeliculasPorGenero(String genero) {
		return getSimpleJdbcTemplate().query(
				"select codigopelicula, nombre, genero, clasificacion, nacionalidad, director," +
				"sinopsis,duracion,fechaEstreno,fotoPath,estado from pelicula where genero=?",
				new BeanPropertyRowMapper<Pelicula>(Pelicula.class),genero);	
	}

	@Override
	public List<Pelicula> getPeliculasPorClasificacion(String clasificacion) {
		// TODO Auto-generated method stub
		return getSimpleJdbcTemplate().query(
				"select codigopelicula, nombre, genero, clasificacion, nacionalidad, director," +
				"sinopsis,duracion,fechaEstreno,fotoPath,estado from pelicula where clasificacion=?",
				new BeanPropertyRowMapper<Pelicula>(Pelicula.class),clasificacion);	
	}

	@Override
	public Pelicula getPeliculaPorCodigo(String codigo) {
		try {
			return getSimpleJdbcTemplate()
			.queryForObject(
					"select codigopelicula, nombre, genero, clasificacion, nacionalidad, director," +
					"sinopsis,duracion,fechaEstreno,fotoPath,estado from pelicula where codigopelicula=?",
					new BeanPropertyRowMapper<Pelicula>(Pelicula.class),
					codigo);
			
		} catch(DataAccessException ex ){
			return null;
		}
	}

	@Override
	public List<Pelicula> getPeliculasPorEstado(String estado) {
		return getSimpleJdbcTemplate().query(
				"select codigopelicula, nombre, genero, clasificacion, nacionalidad, director," +
				"sinopsis,duracion,fechaEstreno,fotoPath,estado from pelicula where estado=?",
				new BeanPropertyRowMapper<Pelicula>(Pelicula.class),estado);	
	}

}
